﻿// 3526. 素数.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>


using namespace std;
/*
https://www.acwing.com/problem/content/3529/

输入一个整数 n，要求输出所有从 1 到这个整数之间(不包括 1和这个整数)个位为 1的素数，如果没有则输出 −1。

输入格式
输入包含多组测试数据。

每组数据占一行，包含一个整数 n。

输出格式
每组数据输出占一行，由小到大输出所有满足条件的素数，素数之间单个空格隔开。
如果没有则输出 −1

数据范围
2≤n≤10000
,
输入最多包含 100组数据。

输入样例：
100
输出样例：
11 31 41 61 71


2
11
100
10000

*/

const int N = 10010;
int primes[N], cnt;     // primes[]存储所有素数
bool st[N];             // st[x]存储x是否被筛掉
int n;

void get_primes(int n)
{
    for (int i = 2; i <= n; i++)
    {
        if (!st[i]) primes[cnt++] = i;
        for (int j = 0; primes[j] <= n / i; j++)
        {
            st[primes[j] * i] = true;
            if (i % primes[j] == 0) break;
        }
    }
}
 

int main()
{
    get_primes(N-1);
    while (cin >> n) {
        int flag = 0;
        for (int i = 0; i < cnt; i++) {
            if (primes[i] >= n) break;
            if (primes[i] % 10 == 1) {
                flag = 1;
                cout << primes[i] << " ";
            }
        }
        if (flag == 0) {
            cout << -1;
        }
        cout << endl;
    }


    return 0;
}

 